// 导入Vue
import Vue from 'vue';
// 导入Vue-router
import VueRouter from 'vue-router';

import store from '@/store'
// 在Vue中引用VueRouter
Vue.use(VueRouter);
// 导入路由配置的组件



import Mobile from '@/view/Mobile.vue'; //主要页面
		import Statusbar from '@/components/pc/default/Statusbar.vue' //电脑端头部
		import PcHome from '@/view/pc/PcHome.vue'; //电脑端页面
		import PcBookDetail from '@/components/pc/PcBookDetail.vue' //电脑端头部
		
import MobileHome from '@/view/mobile/MobileHome.vue'; //手机端页面
import MobileCarousel from '@/view/mobile/MobileCarousel.vue'; //手机端页面
	import MobileInfo from '@/view/mobile/MobileInfo.vue'; //手机端页面
	
	import MobilSearch from '@/components/mobile/search/MobilSearch.vue'//搜索
	
	import MobileBookDetail from '@/components/mobile/MobileBookDetail.vue' //详情
	import Mobileinfo from '@/components/mobile/login/Mobileinfo.vue' //修改我的信息
	import MobileShopping from '@/components/mobile/shopping/MobileShopping.vue' //购物车
	import MobileOrder from '@/components/mobile/shopping/MobileOrder.vue' //下单
	import MobilePay from '@/components/mobile/shopping/MobilePay.vue' //付款
	import MobileMyOrders from '@/components/mobile/shopping/MobileMyOrders.vue' //所以的订单

	import MobileHeader from '@/components/mobile/default/MobileHeader.vue' //手机端头部
	import MobileFooter from '@/components/mobile/default/MobileFooter.vue' //手机尾部
import MobilLogin from '@/components/mobile/login/MobilLogin.vue' //手机登录
import Mobilregister from '@/components/mobile/login/Mobilregister.vue' //手机登录
import Mobilupdetpwd from '@/components/mobile/login/Mobilupdetpwd.vue' //手机登录
import MobilupdetFliex from '@/components/mobile/login/MobilupdetFliex.vue' //手机登录

import UserLogin from '@/components/pc/login/UserLogin.vue' //登录页面
import UserRegister from '@/components/pc/login/UserRegister.vue' //注册页面

import adm from '../view/admin/adm.vue'
import HotPic from '@/view/admin/HotPicture/HotPicture.vue'
import updateHotPic from '../view/admin/HotPicture/update.vue'
import FirstType from '../view/admin/Type/FirstType.vue'
import SecondType from '../view/admin/Type/SecondType.vue'
import AllGoods from '../view/admin/goods/AllGoods.vue'
import UpdateGood from '../view/admin/goods/updateGood.vue'
import Orders from '../view/admin/orders/orders.vue'
import addHotPic from '../view/admin/HotPicture/add.vue'
import add from '@/view/admin/goods/add.vue'
import add1 from '@/view/admin/HotPicture/add1/add1.vue'
import add2 from '@/view/admin/HotPicture/add2/add2.vue'
const routes = [{
		path: '/',
		redirect: '/pc/home',
	},
	{
		path: '/pc',
		// name: 'Mobile',
		component: Mobile,
		children: [{
			path: 'home',
			components: {
				default: PcHome, //身体
				header: Statusbar, //头部
				// footert: MobileFooter
			}
		},
		{
			path : 'bookdetail/:bookid',
			name : 'MobileBookDetail',
			meta: {
				title: '查询页面'
			},
			components :{
				default: PcBookDetail, //身体
				header: Statusbar, //头部
			} 
		},
		{
			path: 'login',
			name: 'UserLogin',
			meta: {
				title: '电脑登录'
			},
			components :{
				default: UserLogin, //身体
				header: Statusbar, //头部
			} 
		},
		{
			path: 'register',
			name: 'UserRegister',
			meta: {
				title: '电脑注册'
			},
			components :{
				default: UserRegister, //身体
				header: Statusbar, //头部
			} 
		}
		]
	},
	
	
	{
		path: '/mobile',
		// name: 'Mobile',
		component: Mobile,
		children: [{
			path: 'home',
			components: {
				default: MobileHome, //身体
				header: MobileHeader, //头部
				footert: MobileFooter
			}
		},{
			path: 'carousel',
			components: {
				default: MobileCarousel, //身体
				header: MobileHeader, //头部
				footert: MobileFooter
			}
		},
		{
			path: 'myinfo',
			meta: {
				title: '我的登录信息',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: MobileInfo, //身体
				header: MobileHeader, //头部
				footert: MobileFooter
			}
		},
		{
			path : 'bookdetail/:bookid',
			name : 'MobileBookDetail',
			meta: {
				title: '查询页面'
			},
			component : MobileBookDetail
		},
		{
			path: 'login',
			name: 'MobilLogin',
			meta: {
				title: '手机登录',
				// 区别于其他页面，设置当前路由需要通过守卫验证
			},
			component: MobilLogin
		},
		{
			path: 'register',
			name: 'Mobilregister',
			meta: {
				title: '手机注册',
				// 区别于其他页面，设置当前路由需要通过守卫验证
			},
			component: Mobilregister
		},
		{
			path: 'updetpwd',
			name: 'Mobilupdetpwd',
			meta: {
				title: '修改密码',
				// requiresAuth: true,
				// 区别于其他页面，设置当前路由需要通过守卫验证
			},
			component: Mobilupdetpwd
		},
		{
			path: 'updetfliex',
			name: 'MobilupdetFliex',
			meta: {
				title: '修改头像',
				requiresAuth: true,
				// 区别于其他页面，设置当前路由需要通过守卫验证
			},
			component: MobilupdetFliex
		},
		{
			path: 'shopping',
			name: 'MobileShopping',
			meta: {
				title: '购物车',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: MobileShopping, //身体
				header: MobileHeader, //头部
			}
		},
		{
			path: 'order',
			name: 'MobileOrder',
			meta: {
				title: '下单',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: MobileOrder, //身体
				header: MobileHeader, //头部
			}
		},
		{
			path: 'Myorders',
			name: 'MobileMyOrders',
			meta: {
				title: '我所有的订单',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: MobileMyOrders, //身体
				header: MobileHeader, //头部
			}
		},
		{
			path: 'search',
			name: 'MobilSearch',
			meta: {
				title: '搜索',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			component:MobilSearch
			
			
		},
		{
			path: 'updatinfo',//修改我的发货信息
			name: 'Mobileinfo',
			meta: {
				title: '下单',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: Mobileinfo, //身体
				header: MobileHeader, //头部
			}
		},
		{
			path: 'mypay/:ordid',//修改我的发货信息
			name: 'Mobileinfo',
			meta: {
				title: '支付',
				// 区别于其他页面，设置当前路由需要通过守卫验证
				requiresAuth: true,
			},
			components: {
				default: MobilePay, //身体
				header: MobileHeader, //头部
			}
		},
		
		]
	},
	{
		path: '/adm',
		name: 'Adm',
		component: adm,
		children: [
			{
				path:'doadd',
				name:'add',
				components: {
					default: add
				}
			},
			{
				path:'add2',
				name:'add2',
				components: {
					default: add2
				}
			},
			{
				path:'add1',
				name:'add1',
				components: {
					default: add1
				}
			},
			{
				path: 'hotPic',
				name: 'HotPic',
				components: {
					default: HotPic
				}
			},
			{
				path: 'updateHotpic',
				name: 'updateHotPic',
				components: {
					default: updateHotPic
				}
			}, {
				path: 'addhotpic',
				name: 'addHotPic',
				components: {
					default: addHotPic
				}
			}, {
				path: 'firsttype',
				name: 'FirstType',
				components: {
					default: FirstType
				}
			},
	
			{
				path: 'secondtype',
				name: 'SecondType',
				components: {
					default: SecondType
				}
			},
			{
				path: 'allgoods',
				name: 'AllGoods',
				components: {
					default: AllGoods
				}
			},
			{
				path: 'updategood',
				name: 'UpdateGood',
				components: {
					default: UpdateGood
				}
			},
			{
				path: 'orders',
				name: 'Orders',
				components: {
					default: Orders
				}
			}
		]
	}
	
];

// 创建/实例化路由对象VueRouter
const router = new VueRouter({
	routes,
})

// 设置守卫在进入目标页面之前执行的提作
router.beforeEach((to, from, next) => {
	// to.matched.some(): 遍历路出数组routes
	// 遍历结果是一个布尔型数据
	let result = to.matched.some((record) => record.meta.requiresAuth);
	// 第一层判断的作用:检测用户是否需要前往一个必须登录后才能访问的页面【访问权限限制】
	if (result) {
		// 路由验证【实际开发时，请求登录地址会返回token，同样存储到缓存内: 验证缓存内是否存在token】
		if (store.state.user.user) {
			next();
		} else {
			// 没有登灵数据，需要强制返回登灵页
			// alert('用户未登录，即将前往登录页')
			next({
				path:'/mobile/login'
			});
		}

	} else {
		// 不用验证
		// 如果next函数为空，默认以to的路径为准
		next();
	}
})


// 设置路由守卫一在页面进入目标路由之后实现
// to即特前往的路由地址,from来源地址,next继续下一步
router.afterEach((to, from, next) => {
	document.title = to.meta.title;
	// 解决重复访问的报错问题
	const originalPush = VueRouter.prototype.push;
	// 修改原型对象的push方法
	VueRouter.prototype.push = function push(location) {
		return originalPush.call(this, location).catch(err => err)
	}
})

// 导出路由对象
export default router;